/**
 ******************************************************************************
 * @file           : log_port.h
 * @brief          : MicroLog porting layer interface
 * @version        : 1.1.0
 * @date           : 2025-10-18
 ******************************************************************************
 * @note  移植层接口：用于适配不同平台（裸机/FreeRTOS/其他 RTOS）
 *        用户需要根据实际平台实现 log_port.c 中的函数
 ******************************************************************************
 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __LOG_PORT_H__
#define __LOG_PORT_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "log_cfg.h"
#include <stdint.h>
#include <stddef.h>

/* Exported functions --------------------------------------------------------*/
/* 初始化与反初始化 */
void log_port_init(void);           /* 移植层初始化（硬件资源初始化）*/
void log_port_deinit(void);         /* 移植层反初始化（硬件资源释放）*/

/* 时间戳获取 */
#if LOG_ENABLE_TIMESTAMP
uint32_t log_port_get_tick(void);   /* 获取系统时间戳（毫秒）*/
#endif

/* 任务名称获取 */
#if LOG_ENABLE_TASK
const char* log_port_get_task_name(void);   /* 获取当前任务名称 */
#endif

/* 底层输出 */
void log_port_output(const char *log, size_t size);  /* 底层输出函数（指定长度输出）*/
void log_port_flush(void);                           /* 刷新输出缓冲区 */

/* 输出锁（多线程保护）*/
#if LOG_ENABLE_OUTPUT_LOCK
void log_port_lock(void);           /* 输出锁定（进入临界区）*/
void log_port_unlock(void);         /* 输出解锁（退出临界区）*/
#endif

#ifdef __cplusplus
}
#endif

#endif /* __LOG_PORT_H__ */

